home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xml; import com.extensibility.util.StringUtilities; import com.extensibility.xml.dt.DataType; import com.extensibility.xml.dt.DataTypeFactory; import com.extensibility.xml.dt.DataTypeIntf; import com.extensibility.xml.sax.BufferedHandlerBase; import java.io.IOException; import java.io.Reader; import java.util.Hashtable; import java.util.Stack; import java.util.Vector; import org.xml.sax.AttributeList; import org.xml.sax.InputSource; import org.xml.sax.Locator; import org.xml.sax.Parser; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.LocatorImpl; public final class XDRReader extends BufferedHandlerBase { static final String TOPLEVEL_ELEMTYPE = "ElementType"; static final String TOPLEVEL_ATTRTYPE = "AttributeType"; static final String TAG_ELEMENT = "element"; static final String TAG_ATTRIBUTE = "attribute"; static final String TAG_GROUP = "group"; static final String TAG_COMMENT = "description"; static final String TAG_DATATYPE = "datatype"; private Hashtable elemDecls; private Hashtable globalAttrs; private ElementDeclaration currentElemDecl; private AttributeDeclaration currentAttrDecl; private Vector localAttrsRefGlobal; private Hashtable localAttrs; private Hashtable namespaces; private SchemaIntf schema; private ContentModel currentCM; private boolean cmClosed; private Stack cmConnectors; private Stack contentModels; private Object commentKind; private Stack attrStack = new Stack(); private StringBuffer currentText; private boolean isFirstGroup; private boolean canDeleteFirstGroup; private int groupLevel; private boolean gotSchemaRoot; private boolean inProlog = true; private Locator locator; public XDRReader(SchemaIntf var1) { this.schema = var1; } public void error(String var1, int var2, int var3, int var4) { ParserException var5 = new ParserException(var2, var1); var5.setSource(String.valueOf(String.valueOf(String.valueOf(String.valueOf("See Line: ").concat(String.valueOf(var3))).concat(String.valueOf(" at Column:"))).concat(String.valueOf(var4))).concat(String.valueOf(" in file."))); var5.setSourceLinePos(var3); if (this.schema.getShowErrors() && this.currentAttrDecl != null) { this.currentAttrDecl.addError(var5); } else if (this.schema.getShowErrors() && this.currentElemDecl != null) { this.currentElemDecl.addError(var5); } else { this.schema.addError(var5); } } public void error(SAXParseException var1) { ParserException var2 = new ParserException(240, ((SAXException)var1).getMessage()); var2.setSource(String.valueOf(String.valueOf(String.valueOf(String.valueOf("See Line: ").concat(String.valueOf(this.locator.getLineNumber()))).concat(String.valueOf(" at Column:"))).concat(String.valueOf(this.locator.getColumnNumber()))).concat(String.valueOf(" in file."))); var2.setSourceLinePos(this.locator.getLineNumber()); this.schema.addError(var2); } public void fatalError(SAXParseException var1) { this.error(var1); } public void setDocumentLocator(Locator var1) { this.locator = var1; } public DataType createDataType(String var1) { if (var1.equals("id")) { var1 = DataTypeIntf.ID; } else if (var1.equals("idref")) { var1 = DataTypeIntf.IDREF; } else if (var1.equals("idrefs")) { var1 = DataTypeIntf.IDREFS; } else if (var1.equals("entity")) { var1 = DataTypeIntf.ENTITY; } else if (var1.equals("entities")) { var1 = DataTypeIntf.ENTITIES; } else if (var1.equals("nmtoken")) { var1 = DataTypeIntf.NMTOKEN; } else if (var1.equals("nmtokens")) { var1 = DataTypeIntf.NMTOKENS; } else if (var1.equals("enumeration")) { var1 = DataTypeIntf.ENUMERATION; } else if (var1.equals("notation")) { var1 = DataTypeIntf.NOTATION; } else if (!DataTypeFactory.isKnown(var1)) { this.error(var1, 250, this.locator.getLineNumber(), this.locator.getColumnNumber()); var1 = DataTypeIntf.STRING; } return DataTypeFactory.createDataType(var1); } public void parse(URI var1) throws IOException { Reader var2 = var1.createReader(); this.parse(var2); } public void parse(Reader var1) throws IOException { try { Parser var2 = SchemaUtilities.getParser(); this.setDocumentLocator(new LocatorImpl()); var2.setEntityResolver(this); var2.setErrorHandler(this); var2.setDocumentHandler(this); var2.parse(new InputSource(var1)); } catch (IOException var5) { SAXParseException var7 = new SAXParseException("IO Exception", this.locator, var5); this.error(var7); } catch (Exception var6) { SAXParseException var4 = new SAXParseException("Parser Exception", this.locator, var6); this.error(var4); } } public void startDocument() { this.elemDecls = new Hashtable(); this.globalAttrs = new Hashtable(); this.currentElemDecl = null; this.localAttrsRefGlobal = new Vector(); this.localAttrs = new Hashtable(); this.namespaces = new Hashtable(); this.cmClosed = false; this.cmConnectors = new Stack(); this.contentModels = new Stack(); this.commentKind = null; this.currentText = new StringBuffer(); this.gotSchemaRoot = false; } public void endDocument() { } public void processingInstruction(String var1, String var2) throws SAXException { ProcessingInstruction var3 = new ProcessingInstruction(var1, var2); if (this.inProlog) { ((BaseDeclaration)var3).setIsInProlog(true); } this.schema.insertDeclaration(var3, (BaseDeclaration)null); } public void startElement(String var1, AttributeList var2) { this.inProlog = false; this.currentText.setLength(0); if (((BufferedHandlerBase)this).isSavingXML()) { super.startElement(var1, var2); } else { this.parseElement(var1, var2); this.attrStack.push(var2); } } private void doSchemaNode(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); if (var3.startsWith("xmlns:")) { String var4 = var3.substring(6, var3.length()); if (var4.indexOf("dt") == -1) { String var5 = var1.getValue(var2); NamespaceDeclaration var6 = new NamespaceDeclaration(var4, var5); this.schema.insertDeclaration(var6, (BaseDeclaration)null); this.namespaces.put(var5, var4); } } } this.addMetaProps(var1); } private char getCurrentConnection() { return (Character)this.cmConnectors.peek(); } private ContentModelTerm getCurrentParent() { return this.contentModels.empty() ? null : (ContentModelTerm)this.contentModels.peek(); } private void doElementTypeNode(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; String var5 = null; String var6 = null; for(int var7 = 0; var7 < var1.getLength(); ++var7) { String var8 = var1.getName(var7); if (var8.equals("name")) { var2 = var1.getValue(var7); } else if (var8.equals("content")) { var3 = var1.getValue(var7); } else if (var8.equals("model")) { var4 = var1.getValue(var7); } else if (var8.equals("order")) { var5 = var1.getValue(var7); } else if (var8.equals("dt:type")) { var6 = var1.getValue(var7); } else if (var8.indexOf(":") == -1) { this.error(var8, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.groupLevel = 0; this.isFirstGroup = true; this.canDeleteFirstGroup = false; if (var2 == null) { var2 = new String("UNDEFINED"); this.error("ElementType", 202, this.locator.getLineNumber(), this.locator.getColumnNumber()); } if (var3 == null) { var3 = new String("mixed"); } if (var4 == null) { var4 = new String("open"); } if (this.elemDecls.containsKey(var2)) { this.currentElemDecl = (ElementDeclaration)this.elemDecls.get(var2); this.error(var2, 206, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else { this.currentElemDecl = new ElementDeclaration(var2, 3); this.elemDecls.put(var2, this.currentElemDecl); } this.addMetaProps(this.currentElemDecl, var1); this.currentCM = this.currentElemDecl.getContentModel(); this.currentCM.setOpen(var4.toString().equals("open")); if (var3.toString().equals("empty")) { this.currentCM.setContentModel(3); this.cmClosed = true; } else if (var3.toString().equals("textOnly")) { this.currentCM.setContentModel(5); if (var6 != null) { this.currentElemDecl.setDataType(this.createDataType(var6)); } this.cmClosed = true; } else { Object var9 = null; ContentModelTerm var10; if (var3.toString().equals("eltOnly")) { this.currentCM.setContentModel(6); var10 = this.currentCM.getRootGroup(); if (var5 == null) { var5 = "seq"; } if (var5.equals("many")) { var10.setOccurance('*'); } } else if (var3.toString().equals("mixed")) { this.currentCM.setContentModel(2); var10 = this.currentCM.getRootGroup(); if (var5 == null) { var5 = "many"; } if (!var5.toString().equals("many")) { this.error(var5, 253, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } else { this.error(var3, 251, this.locator.getLineNumber(), this.locator.getColumnNumber()); this.currentCM.setContentModel(2); var10 = this.currentCM.getRootGroup(); if (var5 == null) { var5 = "many"; } } this.cmConnectors.push(this.getConnector(var5)); if (var10 != null) { this.contentModels.push(var10); } } } private void doAttributeTypeNode(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; String var5 = null; String var6 = null; for(int var7 = 0; var7 < var1.getLength(); ++var7) { String var8 = var1.getName(var7); if (var8.equals("name")) { var2 = var1.getValue(var7); } else if (var8.equals("dt:type")) { var3 = var1.getValue(var7); } else if (var8.equals("dt:values")) { var4 = var1.getValue(var7); } else if (var8.equals("default")) { var5 = var1.getValue(var7); } else if (var8.equals("required")) { var6 = var1.getValue(var7); } else if (var8.indexOf(":") == -1) { this.error(var8, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { var2 = new String("UNDEFINED"); this.error("AttributeType", 202, this.locator.getLineNumber(), this.locator.getColumnNumber()); } DataType var12; if (var3 != null) { var12 = this.createDataType(var3); } else { var12 = DataTypeFactory.createDataType(1); } Vector var9 = null; if (var4 != null) { if (var3 != null && !var3.equals("enumeration") && !var3.equals("notation")) { this.error(var4, 254, this.locator.getLineNumber(), this.locator.getColumnNumber()); } var9 = StringUtilities.parseNames(var4); } boolean var10 = false; if (var6 != null) { if (((String)var6).equals("yes")) { var10 = true; } else if (!((String)var6).equals("no")) { this.error(var6, 262, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } AttributeDeclaration var11 = new AttributeDeclaration(this.currentElemDecl, var2, var12, var9, var10, var5); this.currentAttrDecl = var11; if (this.currentElemDecl == null) { this.globalAttrs.put(var2, var11); } else { this.localAttrs.put(var2, var11); } this.addMetaProps(var11, var1); } private void appendMetaProp(BaseDeclaration var1, String var2, String var3) { if (var1 != null) { var1.appendMetaProp(var2, var3); } else { this.schema.getMetaPropHash().appendMetaProp(var2, var3); } } private void addMetaProp(BaseDeclaration var1, String var2, AttributeList var3) { Hashtable var4 = new Hashtable(); for(int var5 = 0; var5 < var3.getLength(); ++var5) { var4.put(var3.getName(var5), var3.getValue(var5)); } if (var1 != null) { var1.putMetaPropAttrs(var2, var4); } else { this.schema.getMetaPropHash().putMetaPropAttrs(var2, var4); } } private void addMetaProps(BaseDeclaration var1, AttributeList var2) { for(int var3 = 0; var3 < var2.getLength(); ++var3) { String var4 = var2.getName(var3); if (var4.indexOf(58) > 0 && var4.indexOf("xmlns") != 0 && var4.indexOf("dt:") != 0) { var1.putMetaProp(var4, var2.getValue(var3)); } } } private void addMetaProps(AttributeList var1) { for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); if (var3.indexOf(58) > 0 && var3.indexOf("xmlns") != 0 && var3.indexOf("dt:") != 0) { this.schema.getMetaPropHash().putMetaProp(var3, var1.getValue(var2)); } } } private void addCPMetaProps(ElementDeclaration var1, String var2, AttributeList var3) { for(int var4 = 0; var4 < var3.getLength(); ++var4) { String var5 = var3.getName(var4); if (var5.indexOf(58) > 0 && var5.indexOf("xmlns") != 0) { var1.putCPMetaProp(var2, var5, var3.getValue(var4)); } } } private void doAttrOverride(AttributeDeclaration var1, AttributeDeclaration var2, String var3, String var4, int var5) { if (var3 != null) { var2.setDefault(var3); } else if (var1 != null) { var2.setDefault(var1.getDefault()); } if (var4 != null) { if (var4.equals("yes")) { var2.setRequired(true); } else if (var4.equals("no")) { var2.setRequired(false); } else { this.error(var4, 262, var5, 0); } } else if (var1 != null) { var2.setRequired(var1.getRequired()); } } private void doAttributeNodeOverrides(AttributeDeclaration var1, AttributeList var2) { String var3 = null; String var4 = null; for(int var5 = 0; var5 < var2.getLength(); ++var5) { String var6 = var2.getName(var5); String var7 = var2.getValue(var5); if (var6.equals("default")) { var3 = var7; } else if (var6.equals("required")) { var4 = var7; } } this.doAttrOverride((AttributeDeclaration)null, var1, var3, var4, this.locator.getLineNumber()); } private void createLocalRefAttr(AttributeDeclaration var1, AttributeRefGlobalInfo var2, boolean var3) { AttributeDeclaration var4 = (AttributeDeclaration)var1.clone(var2.elementDecl); var4.setReference(true); this.doAttrOverride(var1, var4, var2.attrDefault, var2.attrRequired, var2.linenumber); if (var3) { this.schema.insertDeclaration(var4, (BaseDeclaration)null); } } private void doAttributeNode(AttributeList var1) { String var2 = null; String var3 = null; String var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("type")) { var2 = var1.getValue(var5); } else if (var6.equals("default")) { var3 = var1.getValue(var5); } else if (var6.equals("required")) { var4 = var1.getValue(var5); } else if (var6.indexOf(58) < 0) { this.error(var6, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { new String("UNDEFINED"); this.error("attribute", 202, this.locator.getLineNumber(), this.locator.getColumnNumber()); } else if (this.localAttrs.containsKey(var2)) { AttributeDeclaration var8 = (AttributeDeclaration)this.localAttrs.get(var2); this.doAttributeNodeOverrides(var8, var1); this.addMetaProps(var8, var1); } else if (this.globalAttrs.containsKey(var2)) { AttributeDeclaration var9 = (AttributeDeclaration)this.globalAttrs.get(var2); AttributeRefGlobalInfo var7 = new AttributeRefGlobalInfo(var2, this.currentElemDecl, var3, var4, 0); this.createLocalRefAttr(var9, var7, false); } else if (var2.indexOf(":") > 0) { String var10 = var2.substring(0, var2.indexOf(":")); String var11 = var2.substring(var2.indexOf(":") + 1, var2.length()); if (!this.namespaces.contains(var10)) { this.error(String.valueOf(String.valueOf(var2).concat(String.valueOf(", "))).concat(String.valueOf(var10)), 241, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } else { this.localAttrsRefGlobal.addElement(new AttributeRefGlobalInfo(var2, this.currentElemDecl, var3, var4, this.locator.getLineNumber())); } } private void doGroupNode(AttributeList var1) { if (this.cmClosed) { this.error(this.currentElemDecl.getName(), 255, this.locator.getLineNumber(), this.locator.getColumnNumber()); } String var2 = null; String var3 = null; String var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("minOccurs")) { var2 = var1.getValue(var5); } else if (var6.equals("maxOccurs")) { var3 = var1.getValue(var5); } else if (var6.equals("order")) { var4 = var1.getValue(var5); } else { this.error(var6, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var4 == null) { var4 = "seq"; } char var8 = this.getOccurance(var2, var3); ContentModelTerm var7 = new ContentModelTerm(); var7.setOccurance(var8); var7.setConnection(this.getCurrentConnection()); this.getCurrentParent().addTerm(var7); this.contentModels.push(var7); this.cmConnectors.push(this.getConnector(var4)); if (this.isFirstGroup) { this.canDeleteFirstGroup = true; } else if (this.groupLevel == 0) { this.canDeleteFirstGroup = false; } this.isFirstGroup = false; ++this.groupLevel; } private void doElementNode(AttributeList var1) { if (this.cmClosed) { this.error(this.currentElemDecl.getName(), 255, this.locator.getLineNumber(), this.locator.getColumnNumber()); } String var2 = null; String var3 = null; String var4 = null; for(int var5 = 0; var5 < var1.getLength(); ++var5) { String var6 = var1.getName(var5); if (var6.equals("type")) { var2 = var1.getValue(var5); } else if (var6.equals("minOccurs")) { var3 = var1.getValue(var5); } else if (var6.equals("maxOccurs")) { var4 = var1.getValue(var5); } else if (var6.indexOf(58) <= 0) { this.error(var6, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { var2 = new String("UNDEFINED"); this.error("element", 202, this.locator.getLineNumber(), this.locator.getColumnNumber()); } if (var2.indexOf(":") > 0) { String var8 = var2.substring(0, var2.indexOf(":")); var2.substring(var2.indexOf(":") + 1); if (!this.namespaces.contains(var8)) { this.error(String.valueOf(String.valueOf(var2).concat(String.valueOf(", "))).concat(String.valueOf(var8)), 242, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } this.addCPMetaProps(this.currentElemDecl, var2, var1); char var9 = this.getOccurance(var3, var4); ContentModelTerm var7 = this.getCurrentParent(); if (var7 == null && this.currentCM != null && this.currentCM.isAny()) { this.currentCM.setContentModel(4); var7 = this.currentCM.getRootGroup(); this.contentModels.push(var7); } var7.addTerm(new ContentModelTerm(new TypeRef(var2), var9, this.getCurrentConnection())); if (this.groupLevel == 0) { this.canDeleteFirstGroup = false; } this.isFirstGroup = false; } private void doDatatypeNode(AttributeList var1) { String var2 = null; for(int var3 = 0; var3 < var1.getLength(); ++var3) { String var4 = var1.getName(var3); if (var4.equals("dt:type")) { var2 = var1.getValue(var3); } else { this.error(var4, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (var2 == null) { var2 = new String("string"); this.error("datatype", 258, this.locator.getLineNumber(), this.locator.getColumnNumber()); } if (this.currentAttrDecl != null) { this.currentAttrDecl.setDataType(this.createDataType(var2)); } else if (this.currentElemDecl != null) { this.currentElemDecl.setDataType(this.createDataType(var2)); } else { this.error("datatype", 259, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } private void doCommentNode(AttributeList var1) { this.commentKind = null; for(int var2 = 0; var2 < var1.getLength(); ++var2) { String var3 = var1.getName(var2); if (var3.equals("usage")) { this.commentKind = var1.getValue(var2); } else { this.error(var3, 252, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } if (this.commentKind == null) { this.commentKind = new String(""); } ((BufferedHandlerBase)this).setSaveXML(true); ((BufferedHandlerBase)this).clearSavedXML(); } public void parseElement(String var1, AttributeList var2) { if (!this.gotSchemaRoot && !var1.equals("Schema")) { this.error(var1, 260, this.locator.getLineNumber(), this.locator.getColumnNumber()); this.gotSchemaRoot = true; } if (var1.equals("Schema")) { this.gotSchemaRoot = true; this.doSchemaNode(var2); } else if (var1.equals("ElementType")) { this.doElementTypeNode(var2); } else if (var1.equals("AttributeType")) { this.doAttributeTypeNode(var2); } else if (var1.equals("attribute")) { this.doAttributeNode(var2); } else if (var1.equals("group")) { this.doGroupNode(var2); } else if (var1.equals("element")) { this.doElementNode(var2); } else if (var1.equals("datatype")) { this.doDatatypeNode(var2); } else if (var1.equals("description")) { this.doCommentNode(var2); } else if (this.getCurrentDecl() == null || var1.indexOf(58) < 0) { this.error(var1, 239, this.locator.getLineNumber(), this.locator.getColumnNumber()); } } public void endElement(String var1) { if (((BufferedHandlerBase)this).isSavingXML() && !var1.equals("description")) { super.endElement(var1); } else { AttributeList var2 = (AttributeList)this.attrStack.pop(); if (var1.equals("ElementType")) { if (this.canDeleteFirstGroup && this.currentElemDecl.getContentModel().getRootGroup() != null) { ContentModelTerm var3 = this.currentElemDecl.getContentModel().getRootGroup().firstTerm(); this.currentElemDecl.getContentModel().removeTerm(this.currentElemDecl.getContentModel().getRootGroup()); this.currentElemDecl.getContentModel().addTerm(var3); } ContentModel var6 = this.currentElemDecl.getContentModel(); if (var6 != null && var6.isMixed()) { ContentModelTerm var4 = var6.getRootGroup(); if (var4 != null && var4.getOccurance() != '*' && var4.isGroup() && var4.getOwner() == this.currentElemDecl) { var4.setOccurance('*'); } } this.schema.insertDeclaration(this.currentElemDecl, (BaseDeclaration)null); this.currentElemDecl = null; this.localAttrs.clear(); if (!this.contentModels.empty()) { this.contentModels.removeAllElements(); } if (!this.cmConnectors.empty()) { this.cmConnectors.removeAllElements(); } this.cmClosed = false; this.isFirstGroup = false; } else if (var1.equals("AttributeType")) { this.schema.insertDeclaration(this.currentAttrDecl, (BaseDeclaration)null, this.currentElemDecl); this.currentAttrDecl = null; } else if (var1.equals("group")) { --this.groupLevel; if (!this.cmConnectors.empty()) { this.cmConnectors.pop(); } if (!this.contentModels.empty()) { this.contentModels.pop(); } } else if (var1.equals("description")) { ((BufferedHandlerBase)this).setSaveXML(false); String var7 = ((BufferedHandlerBase)this).getSavedXML(); if (this.currentAttrDecl != null) { this.currentAttrDecl.addComment(new Comment((String)this.commentKind, var7)); } else if (this.currentElemDecl != null) { this.currentElemDecl.addComment(new Comment((String)this.commentKind, var7)); } else { this.schema.addComment(new Comment((String)this.commentKind, var7)); } this.commentKind = null; this.currentText.setLength(0); } else if (var1.equals("Schema")) { if (this.localAttrsRefGlobal.size() > 0) { for(int var8 = 0; var8 < this.localAttrsRefGlobal.size(); ++var8) { AttributeRefGlobalInfo var9 = (AttributeRefGlobalInfo)this.localAttrsRefGlobal.elementAt(var8); if (this.globalAttrs.containsKey(var9.attrName)) { AttributeDeclaration var5 = (AttributeDeclaration)this.globalAttrs.get(var9.attrName); this.createLocalRefAttr(var5, var9, true); } else { this.currentElemDecl = var9.elementDecl; this.error(var9.attrName, 237, var9.linenumber, 0); this.currentElemDecl = null; } } } } else if (var1.indexOf(58) >= 0) { if (var1.indexOf("xmlns") != 0) { if (var2.getLength() == 0) { this.appendMetaProp(this.getCurrentDecl(), var1, this.currentText.toString()); } else { this.addMetaProp(this.getCurrentDecl(), var1, var2); } } this.currentText.setLength(0); } if (this.currentText.length() > 0) { if (!StringUtilities.isWhitespace(this.currentText.toString())) { this.error(this.currentText.toString(), 239, this.locator.getLineNumber(), this.locator.getColumnNumber()); } this.currentText.setLength(0); } } } private BaseDeclaration getCurrentDecl() { if (this.currentElemDecl != null) { return this.currentElemDecl; } else { return this.currentAttrDecl != null ? this.currentAttrDecl : null; } } public void characters(char[] var1, int var2, int var3) throws SAXException { if (((BufferedHandlerBase)this).isSavingXML()) { super.characters(var1, var2, var3); } else { this.currentText.append(var1, var2, var3); } } protected char getOccurance(Object var1, Object var2) { char var3 = '\u0000'; var3 = '\u0000'; if (var1 == null) { var1 = new String("1"); } if (var2 == null) { var2 = new String("1"); } if (((String)var1).equals("1") && ((String)var2).equals("1")) { var3 = '\u0000'; } else if (((String)var1).equals("0") && ((String)var2).equals("1")) { var3 = '?'; } else if (((String)var1).equals("0") && ((String)var2).equals("*")) { var3 = '*'; } else if (((String)var1).equals("1") && ((String)var2).equals("*")) { var3 = '+'; } else { this.error(String.valueOf(String.valueOf(String.valueOf("minOccurs=").concat(String.valueOf((String)var1))).concat(String.valueOf(", maxOccurs="))).concat(String.valueOf((String)var2)), 257, this.locator.getLineNumber(), this.locator.getColumnNumber()); } return var3; } protected Character getConnector(Object var1) { Character var2 = new Character(','); if (((String)var1).equals("seq")) { var2 = new Character(','); } else if (((String)var1).equals("one")) { var2 = new Character('|'); } else if (((String)var1).equals("many")) { var2 = new Character('|'); } else { this.error((String)var1, 261, this.locator.getLineNumber(), this.locator.getColumnNumber()); } return var2; } private void doIntro(AttributeList var1) { ((BufferedHandlerBase)this).setSaveXML(true); ((BufferedHandlerBase)this).clearSavedXML(); } }